In this document, I explore how children’s use of “modes” differs across age groups. I focus here on Approach #1 from svd_approaches.Rmd: No mean-centering, characters as rows and capacities as columns.
I try out 2 different methods for combining these age groups:
- Treat the evaluations of a given character by each of the two age groups as if they were distinct “characters,” yielding 18 total characters instead of 9.
- Treat the evaluations of a given capacity by each of the two age groups as if they were distinct “capacities,” yielding 40 total capacities instead of 20.
It will be important to think through this using other “Approaches” (see svd_approaches.Rmd); this is a starting point.
As a reminder, in this study, 123 7- to 9-year-old and 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)
Combination Method #1
Raw data matrix visualizations
Joining, by = c("character", "anger", "awareness", "choice", "depth", "embarrassment", "fatigue", "fear", "figuring_out", "guilt", "happiness", "hunger", "hurt_feelings", "love", "memory", "nausea", "pain", "pride", "sadness", "smell", "temperature")

SVD
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Combination Method #2
Raw data matrix visualizations
Joining, by = c("character", "capacity", "mean_rating")

SVD
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label




LS0tCnRpdGxlOiAiRGlta2lkOiBTVkQgQ29tYmluaW5nIEFnZSBHcm91cHMiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRvY19kZXB0aDogMwotLS0KCmBgYHtyLCBpbmNsdWRlID0gRn0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocm1zKQpsaWJyYXJ5KHBzeWNoKQpgYGAKCmBgYHtyIGRhdGEsIGluY2x1ZGUgPSBGfQpzb3VyY2UoInNjcmlwdHMvaW1wb3J0X2RhdGEuUiIpCmBgYApgYGB7ciBmdW5jdGlvbnMsIGluY2x1ZGUgPSBGfQpzb3VyY2UoInNjcmlwdHMvbWFrZV9mdW5jdGlvbnNfY29tYi5SIikKc291cmNlKCJzY3JpcHRzL2RvX2VmYS5SIikKYGBgCgpJbiB0aGlzIGRvY3VtZW50LCBJIGV4cGxvcmUgaG93IGNoaWxkcmVuJ3MgdXNlIG9mICJtb2RlcyIgZGlmZmVycyBhY3Jvc3MgYWdlIGdyb3Vwcy4gSSBmb2N1cyBoZXJlIG9uIEFwcHJvYWNoICMxIGZyb20gYHN2ZF9hcHByb2FjaGVzLlJtZGA6IE5vIG1lYW4tY2VudGVyaW5nLCBjaGFyYWN0ZXJzIGFzIHJvd3MgYW5kIGNhcGFjaXRpZXMgYXMgY29sdW1ucy4KCkkgdHJ5IG91dCAyIGRpZmZlcmVudCBtZXRob2RzIGZvciBjb21iaW5pbmcgdGhlc2UgYWdlIGdyb3VwczoKCjEuIFRyZWF0IHRoZSBldmFsdWF0aW9ucyBvZiBhIGdpdmVuIGNoYXJhY3RlciBieSBlYWNoIG9mIHRoZSB0d28gYWdlIGdyb3VwcyBhcyBpZiB0aGV5IHdlcmUgZGlzdGluY3QgImNoYXJhY3RlcnMsIiB5aWVsZGluZyAxOCB0b3RhbCBjaGFyYWN0ZXJzIGluc3RlYWQgb2YgOS4KMi4gVHJlYXQgdGhlIGV2YWx1YXRpb25zIG9mIGEgZ2l2ZW4gY2FwYWNpdHkgYnkgZWFjaCBvZiB0aGUgdHdvIGFnZSBncm91cHMgYXMgaWYgdGhleSB3ZXJlIGRpc3RpbmN0ICJjYXBhY2l0aWVzLCIgeWllbGRpbmcgNDAgdG90YWwgY2FwYWNpdGllcyBpbnN0ZWFkIG9mIDIwLgoKSXQgd2lsbCBiZSBpbXBvcnRhbnQgdG8gdGhpbmsgdGhyb3VnaCB0aGlzIHVzaW5nIG90aGVyICJBcHByb2FjaGVzIiAoc2VlIGBzdmRfYXBwcm9hY2hlcy5SbWRgKTsgdGhpcyBpcyBhIHN0YXJ0aW5nIHBvaW50LgoKQXMgYSByZW1pbmRlciwgaW4gdGhpcyBzdHVkeSwgMTIzIDctIHRvIDkteWVhci1vbGQgYW5kIDEyNCA0LSB0byA2LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgoKIyBDb21iaW5hdGlvbiBNZXRob2QgIzEKCiMjIFJhdyBkYXRhIG1hdHJpeCB2aXN1YWxpemF0aW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkX21ldGhvZDEgPC0gZF83OSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gcGFzdGUwKGNoYXJhY3RlciwgIl83OSIpKSAlPiUKICBmdWxsX2pvaW4oZF80NiAlPiUgbXV0YXRlKGNoYXJhY3RlciA9IHBhc3RlMChjaGFyYWN0ZXIsICJfNDYiKSkpICU+JQogIGdhdGhlcihjYXBhY2l0eSwgbWVhbl9yYXRpbmcsIC1jaGFyYWN0ZXIpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXJfNzkiLCAicm9ib3RfNzkiLCAiZG9sbF83OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZWRkeV9iZWFyXzc5IiwgImJlZXRsZV83OSIsICJiaXJkXzc5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vdXNlXzc5IiwgImdvYXRfNzkiLCAiZWxlcGhhbnRfNzkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0ZXJfNDYiLCAicm9ib3RfNDYiLCAiZG9sbF80NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZWRkeV9iZWFyXzQ2IiwgImJlZXRsZV80NiIsICJiaXJkXzQ2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vdXNlXzQ2IiwgImdvYXRfNDYiLCAiZWxlcGhhbnRfNDYiKSkpICU+JQogIHNwcmVhZChjYXBhY2l0eSwgbWVhbl9yYXRpbmcpCgpkX21ldGhvZDEgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX3JhdGluZywgLWNoYXJhY3RlcikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGZhY3Rvcihnc3ViKCJeLipfIiwgIiIsIGNoYXJhY3RlcikpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXBhY2l0eSwgeSA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fcmF0aW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDkuNSwgc2l6ZSA9IDEsIGNvbG9yID0gImJsdWUiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNC0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeCA9ICJDYXBhY2l0eSIsIHkgPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiBSYXRpbmciKQpgYGAKCiMjIFNWRAoKYGBge3J9CnN2ZDEuMV80OSA8LSBzdmQoZF9tZXRob2QxICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSArIG5yb3coZF80NiksIG5yb3coZF83OSkgKyBucm93KGRfNDYpKQpgYGAKCiMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQxLjFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDkuNSwgc2l6ZSA9IDEpCmBgYAoKIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkMS4xXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSA5LjUsIHNpemUgPSAxKQpgYGAKCiMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDEuMV80OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bihzdmQxLjFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSwgQ29tYi4gTWV0aG9kICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQxLjFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSwgQ29tYi4gTWV0aG9kICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDEuMV80OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQxLjFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSwgQ29tYi4gTWV0aG9kICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0Kc3ZkMS4xXzQ5X3JlY3QgPC0gVV9mdW4oc3ZkMS4xXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGlmZWxzZShncmVwbCgiNzkiLCBwcm9wZXJ0eSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBwcm9wZXJ0eSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgcHJvcGVydHkgPSBnc3ViKCJfLi4kIiwgIiIsIHByb3BlcnR5KSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXApICU+JQogIHN1bW1hcmlzZShtaW5fMDEgPSBtaW4obW9kZV8wMSksIG1heF8wMSA9IG1heChtb2RlXzAxKSwgCiAgICAgICAgICAgIG1pbl8wMiA9IG1pbihtb2RlXzAyKSwgbWF4XzAyID0gbWF4KG1vZGVfMDIpLAogICAgICAgICAgICBtaW5fMDMgPSBtaW4obW9kZV8wMyksIG1heF8wMyA9IG1heChtb2RlXzAzKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGRhdGEuZnJhbWUoKQoKVV9mdW4oc3ZkMS4xXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGlmZWxzZShncmVwbCgiNzkiLCBwcm9wZXJ0eSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBwcm9wZXJ0eSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgcHJvcGVydHkgPSBnc3ViKCJfLi4kIiwgIiIsIHByb3BlcnR5KSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAxLCB5ID0gbW9kZV8wMiwgbGFiZWwgPSBwcm9wZXJ0eSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSBzdmQxLjFfNDlfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMSwgeG1heCA9IG1heF8wMSwgeW1pbiA9IG1pbl8wMiwgeW1heCA9IG1heF8wMiwKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKSAjKwogICMgY29vcmRfZXF1YWwoKQoKVV9mdW4oc3ZkMS4xXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGlmZWxzZShncmVwbCgiNzkiLCBwcm9wZXJ0eSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBwcm9wZXJ0eSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgcHJvcGVydHkgPSBnc3ViKCJfLi4kIiwgIiIsIHByb3BlcnR5KSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAxLCB5ID0gbW9kZV8wMywgbGFiZWwgPSBwcm9wZXJ0eSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSBzdmQxLjFfNDlfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMSwgeG1heCA9IG1heF8wMSwgeW1pbiA9IG1pbl8wMywgeW1heCA9IG1heF8wMywKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKSAjKwogICMgY29vcmRfZXF1YWwoKQoKVV9mdW4oc3ZkMS4xXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGlmZWxzZShncmVwbCgiNzkiLCBwcm9wZXJ0eSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBwcm9wZXJ0eSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgcHJvcGVydHkgPSBnc3ViKCJfLi4kIiwgIiIsIHByb3BlcnR5KSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAyLCB5ID0gbW9kZV8wMywgbGFiZWwgPSBwcm9wZXJ0eSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSBzdmQxLjFfNDlfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMiwgeG1heCA9IG1heF8wMiwgeW1pbiA9IG1pbl8wMywgeW1heCA9IG1heF8wMywKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKSAjKwogICMgY29vcmRfZXF1YWwoKQpgYGAKCgojIENvbWJpbmF0aW9uIE1ldGhvZCAjMgoKIyMgUmF3IGRhdGEgbWF0cml4IHZpc3VhbGl6YXRpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNX0KZF9tZXRob2QyIDwtIGRfNzkgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX3JhdGluZywgLWNoYXJhY3RlcikgJT4lCiAgbXV0YXRlKGNhcGFjaXR5ID0gcGFzdGUwKGNhcGFjaXR5LCAiXzc5IikpICU+JQogIGZ1bGxfam9pbihkXzQ2ICU+JQogICAgICAgICAgICAgIGdhdGhlcihjYXBhY2l0eSwgbWVhbl9yYXRpbmcsIC1jaGFyYWN0ZXIpICU+JQogICAgICAgICAgICAgIG11dGF0ZShjYXBhY2l0eSA9IHBhc3RlMChjYXBhY2l0eSwgIl80NiIpKSkgJT4lCiAgc3ByZWFkKGNhcGFjaXR5LCBtZWFuX3JhdGluZykKCmRfbWV0aG9kMiAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICBtdXRhdGUoY2FwYWNpdHkgPSBmYWN0b3IoY2FwYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImFuZ2VyXzc5IiwgImF3YXJlbmVzc183OSIsICJjaG9pY2VfNzkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwdGhfNzkiLCAiZW1iYXJyYXNzbWVudF83OSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYXRpZ3VlXzc5IiwgImZlYXJfNzkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlndXJpbmdfb3V0Xzc5IiwgImd1aWx0Xzc5IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhcHBpbmVzc183OSIsICJodW5nZXJfNzkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHVydF9mZWVsaW5nc183OSIsICJsb3ZlXzc5IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeV83OSIsICJuYXVzZWFfNzkiLCAicGFpbl83OSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmlkZV83OSIsICJzYWRuZXNzXzc5IiwgInNtZWxsXzc5IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlbXBlcmF0dXJlXzc5IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZ2VyXzQ2IiwgImF3YXJlbmVzc180NiIsICJjaG9pY2VfNDYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwdGhfNDYiLCAiZW1iYXJyYXNzbWVudF80NiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYXRpZ3VlXzQ2IiwgImZlYXJfNDYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlndXJpbmdfb3V0XzQ2IiwgImd1aWx0XzQ2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhcHBpbmVzc180NiIsICJodW5nZXJfNDYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHVydF9mZWVsaW5nc180NiIsICJsb3ZlXzQ2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeV80NiIsICJuYXVzZWFfNDYiLCAicGFpbl80NiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmlkZV80NiIsICJzYWRuZXNzXzQ2IiwgInNtZWxsXzQ2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlbXBlcmF0dXJlXzQ2IikpKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gZmFjdG9yKGdzdWIoIl4uKl8iLCAiIiwgY2FwYWNpdHkpKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2FwYWNpdHksIHkgPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX3JhdGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxMCkpICsKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAyMC41LCBzaXplID0gMSwgY29sb3IgPSAiYmx1ZSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiA0LSB0byA5LXllYXItb2xkIGNoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcyIsCiAgICAgICB4ID0gIkNhcGFjaXR5IiwgeSA9ICJDaGFyYWN0ZXIiLAogICAgICAgZmlsbCA9ICJNZWFuIFJhdGluZyIpCmBgYAoKIyMgU1ZECgpgYGB7cn0Kc3ZkMS4yXzQ5IDwtIHN2ZChkX21ldGhvZDIgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksIAogICAgICAgICAgICAgICBucm93KGRfNzkpICsgbnJvdyhkXzQ2KSwgbnJvdyhkXzc5KSArIG5yb3coZF80NikpCmBgYAoKIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNX0KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkMS4yXzQ5LCAiY2hpbGRyZW5fY29tYl9jYXAiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDIwLjUsIHNpemUgPSAxKSArCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxMCkpCmBgYAoKIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkMS4yXzQ5LCAiY2hpbGRyZW5fY29tYl9jYXAiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSwgQ29tYi4gTWV0aG9kICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQxLjJfNDkpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxLCBDb21iLiBNZXRob2QgIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkMS4yXzQ5LCAiY2hpbGRyZW5fY29tYl9jYXAiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAyMC41LCBzaXplID0gMSkKYGBgCgojIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQxLjJfNDksICJjaGlsZHJlbl9jb21iX2NhcCIsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxLCBDb21iLiBNZXRob2QgIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMS4yXzQ5LCAiY2hpbGRyZW5fY29tYl9jYXAiLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxLCBDb21iLiBNZXRob2QgIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMS4yXzQ5LCAiY2hpbGRyZW5fY29tYl9jYXAiLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSwgQ29tYi4gTWV0aG9kICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0Kc3ZkMS4yXzQ5X3JlY3QgPC0gVl9mdW4oc3ZkMS4yXzQ5LCAiY2hpbGRyZW5fY29tYl9jYXAiKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIGl0ZW0pLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgaXRlbSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgaXRlbSA9IGdzdWIoIl8uLiQiLCAiIiwgaXRlbSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ3JvdXBfYnkoYWdlX2dyb3VwKSAlPiUKICBzdW1tYXJpc2UobWluXzAxID0gbWluKG1vZGVfMDEpLCBtYXhfMDEgPSBtYXgobW9kZV8wMSksIAogICAgICAgICAgICBtaW5fMDIgPSBtaW4obW9kZV8wMiksIG1heF8wMiA9IG1heChtb2RlXzAyKSwKICAgICAgICAgICAgbWluXzAzID0gbWluKG1vZGVfMDMpLCBtYXhfMDMgPSBtYXgobW9kZV8wMykpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBkYXRhLmZyYW1lKCkKClZfZnVuKHN2ZDEuMl80OSwgImNoaWxkcmVuX2NvbWJfY2FwIikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGlmZWxzZShncmVwbCgiNzkiLCBpdGVtKSwgIjctOXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGdyZXBsKCI0NiIsIGl0ZW0pLCAiNC02eSIsIE5BKSksCiAgICAgICAgIGl0ZW0gPSBnc3ViKCJfLi4kIiwgIiIsIGl0ZW0pKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGZ1bGxfam9pbihlZmFfY29sb3JzXzc5LCBieSA9IGMoIml0ZW0iID0gImNhcGFjaXR5IikpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMDEsIHkgPSBtb2RlXzAyLCBsYWJlbCA9IGl0ZW0pKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSBzdmQxLjJfNDlfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMSwgeG1heCA9IG1heF8wMSwgeW1pbiA9IG1pbl8wMiwgeW1heCA9IG1heF8wMiwKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IGZhY3Rvciwgc2hhcGUgPSBhZ2VfZ3JvdXApKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoIiNmODc2NmQiLCAiIzAwYmZjNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiMzNzdlYjgiLCAiIzRkYWY0YSIsICIjZTQxYTFjIikpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIGdncmVwZWw6Omdlb21fdGV4dF9yZXBlbChzaG93LmxlZ2VuZCA9IEYsIHNpemUgPSAzKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxLCBDb21iLiBNZXRob2QgIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIsCiAgICAgICBjb2xvciA9ICJBZ2UgR3JvdXAvRmFjdG9yIiwgZmlsbCA9ICJBZ2UgR3JvdXAiLCBzaGFwZSA9ICJBZ2UgR3JvdXAiKSAjKwogICMgY29vcmRfZXF1YWwoKQoKVl9mdW4oc3ZkMS4yXzQ5LCAiY2hpbGRyZW5fY29tYl9jYXAiKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIGl0ZW0pLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgaXRlbSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgaXRlbSA9IGdzdWIoIl8uLiQiLCAiIiwgaXRlbSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZnVsbF9qb2luKGVmYV9jb2xvcnNfNzksIGJ5ID0gYygiaXRlbSIgPSAiY2FwYWNpdHkiKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8wMSwgeSA9IG1vZGVfMDMsIGxhYmVsID0gaXRlbSkpICsKICBnZW9tX3JlY3QoZGF0YSA9IHN2ZDEuMl80OV9yZWN0LAogICAgICAgICAgICBhZXMoeCA9IE5VTEwsIHkgPSBOVUxMLCBsYWJlbCA9IE5VTEwsCiAgICAgICAgICAgICAgICB4bWluID0gbWluXzAxLCB4bWF4ID0gbWF4XzAxLCB5bWluID0gbWluXzAzLCB5bWF4ID0gbWF4XzAzLAogICAgICAgICAgICAgICAgY29sb3IgPSBhZ2VfZ3JvdXAsIGZpbGwgPSBhZ2VfZ3JvdXAsIGdyb3VwID0gYWdlX2dyb3VwKSwgCiAgICAgICAgICAgIGFscGhhID0gMC4wNSkgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gZmFjdG9yLCBzaGFwZSA9IGFnZV9ncm91cCkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiI2Y4NzY2ZCIsICIjMDBiZmM0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIzM3N2ViOCIsICIjNGRhZjRhIiwgIiNlNDFhMWMiKSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIiwKICAgICAgIGNvbG9yID0gIkFnZSBHcm91cC9GYWN0b3IiLCBmaWxsID0gIkFnZSBHcm91cCIsIHNoYXBlID0gIkFnZSBHcm91cCIpICMrCiAgIyBjb29yZF9lcXVhbCgpCgpWX2Z1bihzdmQxLjJfNDksICJjaGlsZHJlbl9jb21iX2NhcCIpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgaXRlbSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBpdGVtKSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBpdGVtID0gZ3N1YigiXy4uJCIsICIiLCBpdGVtKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBmdWxsX2pvaW4oZWZhX2NvbG9yc183OSwgYnkgPSBjKCJpdGVtIiA9ICJjYXBhY2l0eSIpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAyLCB5ID0gbW9kZV8wMywgbGFiZWwgPSBpdGVtKSkgKwogIGdlb21fcmVjdChkYXRhID0gc3ZkMS4yXzQ5X3JlY3QsCiAgICAgICAgICAgIGFlcyh4ID0gTlVMTCwgeSA9IE5VTEwsIGxhYmVsID0gTlVMTCwKICAgICAgICAgICAgICAgIHhtaW4gPSBtaW5fMDIsIHhtYXggPSBtYXhfMDIsIHltaW4gPSBtaW5fMDMsIHltYXggPSBtYXhfMDMsCiAgICAgICAgICAgICAgICBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCwgZ3JvdXAgPSBhZ2VfZ3JvdXApLCAKICAgICAgICAgICAgYWxwaGEgPSAwLjA1KSArCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBmYWN0b3IsIHNoYXBlID0gYWdlX2dyb3VwKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCIjZjg3NjZkIiwgIiMwMGJmYzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjMzc3ZWI4IiwgIiM0ZGFmNGEiLCAiI2U0MWExYyIpKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2hvdy5sZWdlbmQgPSBGLCBzaXplID0gMykgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSwgQ29tYi4gTWV0aG9kICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiLAogICAgICAgY29sb3IgPSAiQWdlIEdyb3VwL0ZhY3RvciIsIGZpbGwgPSAiQWdlIEdyb3VwIiwgc2hhcGUgPSAiQWdlIEdyb3VwIikgIysKICAjIGNvb3JkX2VxdWFsKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQxLjJfNDksICJjaGlsZHJlbl9jb21iX2NhcCIsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQxLjJfNDksICJjaGlsZHJlbl9jb21iX2NhcCIsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQxLjJfNDksICJjaGlsZHJlbl9jb21iX2NhcCIsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoK